home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / vtdevel3.lha / SourceAGA / Landscape.s < prev    next >
Text File  |  1994-06-18  |  53KB  |  2,495 lines

  1. ;Landscape
  2.  
  3. rout            ;when this is off, the routine-file will be
  4.             ;assembled, on=testing
  5.             
  6. ;debug            ;when this is on, colors in the background will
  7.             ;show how much time the routine needs.
  8.  
  9. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  10.  
  11. ;ocs            ;off=AGA,on=OCS testing not possible on OCS !
  12.  
  13. routinemode    equ    48;64+16        ;the routinemode !
  14.  
  15.  
  16. ; VideoTracker AGA developer source 25-12-93
  17. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  18. ; wich makes low-resolution overscan a bit ugly.
  19. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  20.  
  21. ; the first part of the source handles the things that are necessary to
  22. ; show the picture/copper and playing of the routine.
  23. ; the part between the "***" lines is the routine-source.
  24. ; at the bottom of the file, there are the necessary incbin-files who
  25. ; are needed to test the routine.
  26. ; these are saved with "save effect" in videotracker. they are raw
  27. ; data files which can be fonts,pictures,landscapes,vectorobjects
  28. ; etcetra.
  29. ; the incbin-files are put in the "variables" table, in the routine
  30. ; player-handler
  31. ; the place where it's done can be found by searching for "!!!"
  32.  
  33.     opt    a+    ;devpac 3 optimize
  34.     opt    o+
  35.  
  36. vew_wid    equ    48
  37. vew_hgt    equ    290
  38. win_hgt    equ    117
  39. win_str    equ    $1a
  40.  
  41.         ifd    ocs
  42. pic_wid        equ    4        ;wide in bytes
  43. pic_hgt        equ    6        ;hoogte
  44. pic_dpt        equ    8        ;number planes
  45. pic_ani        equ    10        ;aantal effes (anim)
  46. pic_vew        equ    12        ;viewmode
  47. pic_cycstr    equ    14        ;cycle start (*4)
  48. pic_cycend    equ    15        ;cycle end (*4)
  49. pic_cycspd    equ    16        ;cycle speed (*4)
  50. pic_cycadd    equ    17        ;cycle add (*4)
  51. pic_palnum    equ    30        ;aantal kleuren
  52. pic_pal        equ    32        ;palette start
  53. pic_palsiz    equ    256*2        ;vaste palette size
  54. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  55.         endc
  56.         
  57.         ifnd    ocs
  58. pic_wid        equ    4        ;wide in bytes
  59. pic_hgt        equ    6        ;hoogte
  60. pic_dpt        equ    8        ;number planes
  61. pic_ani        equ    10        ;aantal effes (anim)
  62. pic_vew        equ    12        ;viewmode
  63. pic_cycstr    equ    14        ;cycle start (*8)
  64. pic_cycend    equ    15        ;cycle end (*8)
  65. pic_cycspd    equ    16        ;cycle speed (*8)
  66. pic_cycadd    equ    17        ;cycle add (*8)
  67. pic_widmod    equ    46        ;animation-width modulo
  68. pic_future    equ    50        ;free future space
  69. pic_palnum    equ    62        ;aantal kleuren
  70. pic_pal        equ    64        ;palette start
  71. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  72. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  73.         endc
  74.         
  75. fon_hgt        equ    4            ;font hoogte
  76. fon_wid        equ    8            ;plane breedte in bytes
  77. fon_dpt        equ    12            ;depth
  78. fon_chrf    equ    16            ;eerste character
  79. fon_chrl    equ    20            ;laatste character
  80. fon_widtab    equ    24            ;font breedte per char
  81. fon_rawpos    equ    256*2+fon_widtab    ;start raw char position
  82. fon_raw        equ    256*4+fon_rawpos    ;start raw planes
  83.  
  84. lnd_sizx    equ    $4        ;size x
  85. lnd_sizy    equ    $8        ;size y
  86. lnd_palnum    equ    $10        ;aantal kleuren -1
  87. lnd_pal        equ    $12        ;palette
  88. lnd_wrl        equ    256*2+lnd_pal    ;worlddata
  89. var_len        equ    $300        ;lengte vartabel
  90.  
  91. var__GfxBase    equ    $000        ;graphics lib
  92. var_pic1    equ    $004        ;current picture
  93. var_anispd1    equ    $008        ;animspeed
  94. var_anitel1    equ    $00c        ;animcount
  95. var_cprbck    equ    $010        ;copperback
  96. var_bck        equ    $014        ;background
  97. var_pic2    equ    $018        ;current picture
  98. var_ntsc    equ    $01c        ;ntsc/pal frequence
  99. var_lnd        equ    $020        ;landscape
  100. var_anilop1    equ    $024
  101. var_rottrg    equ    $028        ;effect trigger
  102. var_txt1    equ    $040        ;text
  103. var_txt16    equ    15*4+var_txt1
  104. var_vec1    equ    $080        ;vectors
  105. var_vec16    equ    15*4+var_vec1
  106. var_fon1    equ    $0c0        ;fonts
  107. var_fon16    equ    15*4+var_fon1
  108. var_cols1    equ    $100        ;colorsets
  109. var_cols16    equ    15*4+var_cols1
  110. var_obj1    equ    $180        ;objects
  111. var_obj16    equ    15*4+var_obj1
  112.  
  113.     ifd    rout
  114.     ;videotracker routine-test
  115.  
  116.     incdir    "w:include/"
  117.     include    "exec/types.i"
  118.     include    "graphics/gfxbase.i"
  119.     include    "lvo/graphics_lib.i"
  120.     incdir    'videotracker:effect/'
  121.  
  122.     SECTION    1,CODE_C
  123. tus
  124.     lea    var,a0
  125.  
  126. ;    move.l    #rotincfon,var_fon1(a0)        ;incbinfile !!!
  127. ;    move.l    #rotincfon,4+var_fon1(a0)    ;incbinfile !!!
  128. ;    move.l    #rotinctxt,var_txt1(a0)        ;incbinfile !!!
  129.  
  130. ;    move.l    #rotincobj,var_obj1(a0)    ;incbinfile !!!
  131. ;    move.l    #rotincbck,var_bck(a0)    ;incbinfile !!!
  132. ;    move.l    #rottube,var_vec1(a0)    ;incbinfile !!!
  133. ;    move.l    #rotsrc,curpic1        ;picture !!!
  134. ;    move.l    #rotsrc,curpal1        ;palette !!!
  135. ;    move.l    #rotset,var_cols1(a0)    ;colorset !!!
  136.  
  137.     bsr    paltabres
  138.  
  139.     move.l    ($4).w,a6
  140.     sub.l    a1,a1
  141.     jsr    -$126(a6)        ;findtask
  142.     move.l    d0,curtsk
  143.     move.l    d0,a0
  144.     move.l    $b8(a0),tskpri
  145.  
  146.     lea    dosnam,a1        ;doslib openen
  147.     moveq.l    #0,d0
  148.     move.l    (4).w,a6
  149.     jsr    -408(a6)        ;openlib
  150.     move.l    d0,doslib
  151.  
  152.     bsr.s    label5            ;videotracker opstarten
  153.     
  154.     move.l    curtsk,a0
  155.     move.l    tskpri,$b8(a0)
  156.     move.l    ($4).w,a6
  157.     jsr    -$84(a6)        ;forbid
  158.  
  159.     move.l    doslib,a1
  160.     move.l    (4).w,a6
  161.     jsr    -414(a6)        ;closelib
  162.  
  163.     moveq.l    #0,d0
  164.     rts
  165.     
  166. label5
  167.     move.l    (4).w,a6        ;workbench gedoe
  168.  
  169.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  170.  
  171.     ifd    ntsctest
  172.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  173.     endc
  174.  
  175.     cmp.b    #50,ntscmode        ;ntsc ?
  176.     beq.s    str.ntsc
  177.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  178. str.ntsc
  179.  
  180.     lea    cprjmp,a2        ;copjmp zetten !
  181.     move.l    #cprbck-8,d0
  182.     move.w    d0,6(a2)
  183.     swap    d0
  184.     move.w    d0,2(a2)
  185.  
  186.     lea    cprbck-8,a2        ;copstr zetten !
  187.     move.l    #cpr,d0
  188.     move.w    d0,6(a2)
  189.     swap    d0
  190.     move.w    d0,2(a2)
  191.  
  192.     bsr    cprsprrem        ;sprites legen
  193.  
  194.     lea    gfxnam,a1        ;graphics lib openen
  195.     move.l    (4).w,a6
  196.     jsr    -408(a6)        ;openlib
  197.     move.l    d0,a6
  198.     move.l    d0,gfxlib
  199.     move.l    38(a6),oldcprlist
  200.  
  201.     bset    #1,$bfe001
  202.     bsr    copbuf            ;copper vullen
  203.  
  204.     bsr    sysoff
  205.  
  206. gadrun
  207.     btst    #6,($bfe001).l
  208.     bne    gadrun
  209.  
  210. scrend
  211. scrend.play
  212.     bsr    syson
  213.  
  214.     move.l    gfxlib,a1
  215.     move.l    (4).w,a6
  216.     jsr    -414(a6)        ;closelib
  217.  
  218. scrend.qb
  219.     moveq.l    #0,d0    
  220.     rts
  221.     
  222.     ;vertical blank interrupt, no blits.
  223.     ;handles counters,interlace,sprite
  224.     ;level 3
  225.  
  226. intvb
  227.     bra.s    intvb.cnt
  228.     dc.l    'VIDU'
  229.     dc.l    'LOOP'
  230. intvb.cnt
  231.     movem.l    d0-d7/a0-a6,-(sp)
  232.     lea    ($dff000).l,a6
  233.  
  234.     move.w    $01e(a6),d0
  235.     btst    #5,d0            ;vblank ?
  236.     bne.s    intvb.vb
  237.  
  238.     bra.s    intcop.end
  239.  
  240. intvb.vb
  241.     bsr    grap
  242.     bsr    palctr            ;palette zetten
  243.     bsr.s    copbuf            ;copper vullen
  244.     
  245. intvb.end
  246.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  247.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  248.     rte
  249.  
  250. intcop.end
  251.     movem.l    (sp)+,d0-d7/a0-a6
  252.     move.l    intvbold,-(sp)
  253.     rts
  254.  
  255.     ;transmission buffer empty routine, BLIT !
  256.     ;handles routines,animations
  257.     
  258. inttbe                    ;tbe interrupt
  259.     movem.l    d0-d7/a0-a6,-(sp)
  260.     lea    ($dff000).l,a6
  261.  
  262.     move.w    $01e(a6),d0
  263.     btst    #0,d0            ;no tbe ?
  264.     beq.s    intdskblk
  265.  
  266.  
  267.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  268.     beq.s    inttbe.cop
  269.     btst    #2,($dff016).l
  270.     beq.s    inttbe.cop
  271.  
  272.     ifd    debug
  273.     move.w    #$700,$dff180
  274.     endc
  275.     
  276.     bsr    rotply            ;routineplayer BLIT !
  277.     bsr.s    copbuf            ;copper vullen
  278.  
  279.     ifd    debug
  280.     move.w    #$070,$dff180
  281.     endc
  282.     
  283. inttbe.cop
  284.  
  285. inttbe.end
  286.     move.w    #$0001,$09c(a6)
  287.     movem.l    (sp)+,d0-d7/a0-a6
  288.     rte
  289.  
  290. intdskblk
  291.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  292.     movem.l    (sp)+,d0-d7/a0-a6
  293.     move.l    inttbeold,-(sp)
  294.     rts
  295.  
  296.  
  297.     ;moves the copperbuffer to the copperlist
  298.     ;sort of double buffering
  299.     
  300. copbuf
  301.     movem.l    d0-d7/a0-a6,-(sp)
  302.  
  303.     lea    ($dff000).l,a6
  304.  
  305. copbuf.novb                ;copperchange overslaan
  306.     moveq.l    #0,d0
  307.     move.b    $005(a6),d0
  308.     lsl.w    #8,d0
  309.     moveq.l    #0,d1
  310.     move.b    $006(a6),d1
  311.     add.w    d1,d0
  312.  
  313.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  314.     blt    copbuf.novb
  315.  
  316.     cmp.b    #50,ntscmode
  317.     beq.s    copbuf.pal
  318.     cmp.w    #$133-72-8,d0        ;ntsc grens
  319.     bge    copbuf.novb
  320.     bra.s    copbuf.cont
  321. copbuf.pal
  322.     cmp.w    #$133-8,d0        ;pal grens
  323.     bge    copbuf.novb
  324. copbuf.cont
  325.  
  326.     lea    gra.s,a0        ;buffer copieren
  327.     lea    cprbuf,a1
  328. copbuf_aga                ;AGA stuff :)
  329.     move.l    #(gra.ql)/4-1,d0
  330. copbuf.a
  331.     move.w    2(a0),2(a1)
  332.     add.l    #4,a0
  333.     add.l    #4,a1
  334.     dbra    d0,copbuf.a
  335.  
  336. copbuf.end
  337.     movem.l    (sp)+,d0-d7/a0-a6
  338.     rts
  339.  
  340.     ;goes back to the workbench
  341.     
  342. syson
  343.     movem.l    d0-d7/a0-a6,-(sp)
  344.  
  345.     move.w    #$0001,$dff09a        ;tbeint uit
  346.     move.l    intvbold,($6c).w
  347.     move.l    inttbeold,($64).w
  348.  
  349.     move.l    4,a6
  350.     jsr    -138(a6)        ;permit
  351.  
  352.     move.l    gfxlib,a6
  353.     jsr    -462(a6)        ;disownblitter
  354.  
  355.     move.l    wbview,a1
  356.     move.l    gfxlib,a6
  357.     jsr    _LVOLoadView(a6)     ; Fix view
  358.     jsr    _LVOWaitTOF(a6)
  359.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  360.  
  361. syson.ras
  362.     cmp.b    #$c0,$dff006        ;prevent copperjump
  363.     bne    syson.ras
  364.  
  365.     move.l    gfxlib,a6
  366.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  367.  
  368.     movem.l    (sp)+,d0-d7/a0-a6
  369.     rts
  370.     
  371.     ;goes back to the gadgetscreen
  372.     
  373. sysoff
  374.     movem.l    d0-d7/a0-a6,-(sp)
  375.      
  376.     move.l    gfxlib,a6
  377.     move.l    gb_ActiView(a6),wbview    ;current view
  378.     sub.l    a1,a1            ; clear a1
  379.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  380.     jsr    _LVOWaitTOF(a6)     ; Wait once
  381.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  382.  
  383.     move.l    gfxlib,a6
  384.     jsr    -456(a6)        ;ownblitter
  385.  
  386.     move.l    4,a6
  387.     jsr    -132(a6)        ;forbid
  388.         
  389.     move.l    ($6c).w,intvbold
  390.     move.l    #intvb,($6c).w
  391.     move.l    ($64).w,inttbeold
  392.     move.l    #inttbe,($64).w
  393.     move.w    #$8001,$dff09a        ;tbeint aan
  394.     bsr    gracpr            ;reset copper
  395.     bsr    copbuf            ;copy copper
  396.     move.l    #cpr,$dff080
  397.  
  398.     movem.l    (sp)+,d0-d7/a0-a6
  399.     rts
  400.     
  401. cprsprrem
  402.     movem.l    d0-d7/a0-a6,-(sp)
  403.     lea    cprspr,a0
  404.     move.l    #sprdat,d0
  405.     move.w    #7,d1
  406. cprsprrem.a
  407.     move.w    d0,3*2(a0)
  408.     swap    d0
  409.     move.w    d0,1*2(a0)
  410.     swap    d0
  411.     add.l    #8,a0
  412.     dbra    d1,cprsprrem.a
  413.     movem.l    (sp)+,d0-d7/a0-a6
  414.     rts
  415.  
  416. varset                    ;variablen neerzetten
  417.     movem.l    d0-d7/a0-a6,-(sp)
  418.     move.l    #var,a0
  419.  
  420.     move.l    #cprbck,var_cprbck(a0)
  421.     move.l    gfxlib,var__GfxBase(a0)
  422.     move.b    ntscmode,var_ntsc(a0)
  423.  
  424.     move.l    curpic1,var_pic1(a0)    ;variabel
  425.     move.l    curpic2,var_pic2(a0)    ;variabel
  426.     move.w    anispd1,var_anispd1(a0)
  427.     move.w    anitel1,var_anitel1(a0)
  428.     move.b    anilop1,var_anilop1(a0)
  429.     move.l    #rottrg,var_rottrg(a0)
  430.     movem.l    (sp)+,d0-d7/a0-a6
  431.     rts
  432.     
  433.     ;this routine handles all videotracker-routines
  434.  
  435. rotply    
  436.     movem.l    d0-d7/a0-a6,-(sp)
  437.  
  438.     moveq.l    #0,d0
  439.  
  440.     lea    currot1,a2        ;routine 1
  441.     move.w    rotinf1,d0        ;routine info
  442.     bsr.s    rotplyr
  443.  
  444. rotply.end
  445.     movem.l    (sp)+,d0-d7/a0-a6
  446.     rts
  447.  
  448.     ;this routine handles 1 routine, BLIT !
  449.     
  450. rotplyr
  451.     movem.l    d0-d7/a1-a6,-(sp)
  452.  
  453.     move.l    #rot,(a2)        ;routinestart address
  454.  
  455. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  456.     clr.l    curpic2            ;background picture
  457.     move.w    #1,anispd1        ;animationspeed
  458.     clr.w    anitel1            ;animation position
  459.  
  460.     lea    var,a0            ;communication-table
  461.     move.l    #rotinc,var_lnd(a0)    ;incbinfile !!!
  462. ;    move.l    #rotinc,var_cols1(a0)    ;incbinfile !!!!!!!!!
  463.  
  464.     move.b    #0,anilop1        ;animloop off/on !!!
  465.     move.w    #32,anispd1        ;animdelay !!!
  466.     move.l    #routinemode,d0        ;routinemode !!!
  467.  
  468.     sub.l    a0,a0            ;picture info legen
  469.  
  470.     tst.l    (a2)            ;is er een routine ?
  471.     beq    rotplyr.end        ;interlace handling
  472.  
  473.     move.l    intdel,d2        ;delay
  474.     move.l    inttel,d1        ;teller
  475.     cmp.w    d2,d1
  476.     blt    rotplyr.end
  477.     clr.l    inttel
  478.                 
  479.     bsr    varset            ;variabelen updaten
  480.  
  481.     move.l    (a2),a1            ;routine halen
  482.     move.l    #var,a0            ;variablen tabel
  483.  
  484.     movem.l    d3-d7/a1-a6,-(sp)
  485.     moveq.l    #0,d1            ;vars wissen
  486.     moveq.l    #0,d2
  487.     moveq.l    #0,d3
  488.     moveq.l    #0,d4
  489.     moveq.l    #0,d5
  490.     moveq.l    #0,d6
  491.     moveq.l    #0,d7
  492.     sub.l    a2,a2
  493.     sub.l    a3,a3
  494.     sub.l    a4,a4
  495.     sub.l    a5,a5
  496.  
  497.     jsr    4(a1)            ;routine afwerken
  498.     movem.l    (sp)+,d3-d7/a1-a6
  499.  
  500.     ;Routine:
  501.     ;
  502.     ;Input:
  503.     ;a0=variabelentabel
  504.     ;d0=routinemode
  505.     ;
  506.     ;Output:
  507.     ;a0=picture
  508.     ;d1=copperlist
  509.     ;d2=interruptdelay        (NOT used till now)
  510.     
  511.     move.w    #$0020,$dff09a        ;vb off !
  512.  
  513.     move.l    d2,intdel        ;delay
  514.  
  515.     lea    cprjmp,a3
  516.     move.l    #cprbck-8,d0
  517.  
  518.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  519.     bne.s    rotplyr.nocop
  520.     tst.l    d1            ;copperlist ?
  521.     beq.s    rotplyr.nocop
  522.     move.l    d1,d0
  523. rotplyr.nocop
  524.     move.w    d0,6(a3)
  525.     swap    d0
  526.     move.w    d0,2(a3)
  527.  
  528.     cmp.l    #0,a0            ;picture ?
  529.     beq.s    rotplyr.endvb
  530.  
  531.     move.l    a0,curpic1        ;current picture (cycle)
  532.     move.l    a0,curpal1        ;current palette
  533.  
  534.     tst.b    rotdpl            ;plane is geleverd
  535.     beq.s    rotplyr.set
  536.     clr.b    rotdpl
  537.     clr.l    cycdel1            ;cycle info wissen
  538.     clr.l    4+cycdel1
  539.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  540. rotplyr.set
  541.     clr.b    dplctr
  542.     bsr.s    grap
  543.     bsr    grac            ;colorset
  544. rotplyr.endvb
  545.     move.w    #$8020,$dff09a
  546. rotplyr.end
  547.     movem.l    (sp)+,d0-d7/a1-a6
  548.     rts
  549.  
  550.     ;removes possible routine-coppers
  551.     
  552. gracpr
  553.     movem.l    d0-d7/a0-a6,-(sp)
  554.     lea    cprjmp,a3
  555.     move.l    #cprbck-8,d0        ;copperlist resetten
  556.     move.w    d0,6(a3)
  557.     swap    d0
  558.     move.w    d0,2(a3)
  559.     movem.l    (sp)+,d0-d7/a0-a6
  560.     rts
  561.  
  562. grap                    ;d7=anim
  563.     movem.l    d0-d7/a0-a6,-(sp)
  564.  
  565.     clr.l    d7
  566.  
  567.     tst.l    curpic1            ;current picture ?
  568.     beq    grap.end
  569.  
  570.     move.l    curpic1,a2        ;normal pic halen
  571.  
  572.     lea    gracprscr,a1        ;window neerzetten
  573.     move.l    hogscr,d1
  574.  
  575.     move.w    pic_hgt(a2),d3        ;pic hoogte
  576.     move.w    pic_vew(a2),d5
  577.     btst    #2,d5            ;interlace ?
  578.     beq.s    grap.nohi4
  579.     lsr.w    #1,d3            ;/2
  580. grap.nohi4
  581.     cmp.w    d3,d1
  582.     bge.s    grap.hog
  583.     move.w    d1,d3
  584. grap.hog
  585.     sub.w    d3,d1
  586.     lsr.w    #1,d1
  587.     add.w    #win_str,d1
  588.     move.w    d1,d2
  589.     add.w    d3,d2
  590.  
  591.     move.b    d1,2(a1)        ;y start
  592.     move.b    d2,6(a1)        ;y end
  593.  
  594.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  595.     lsl.l    #3,d4
  596.  
  597.     move.l    #vew_wid*8,d0
  598.     move.l    #0,d1
  599.     move.l    #$61,d6
  600.  
  601.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  602.     ble.s    grap.noov1
  603.     move.l    #$41,d6
  604. grap.noov1
  605.  
  606.     move.w    pic_vew(a2),d5
  607.     btst    #15,d5            ;hires ?
  608.     beq.s    grap.nohi2
  609.  
  610.     move.l    #(vew_wid)*8*2,d0
  611.     move.l    #1,d1
  612.     move.l    #$61,d6
  613.  
  614.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  615.     ble.s    grap.nohi2
  616.     move.l    #(vew_wid)*8*2,d0
  617.     move.l    #$51,d6
  618.  
  619.     bra.s    grap.noshi2
  620. grap.nohi2    
  621.     btst    #6,d5            ;super hires ?
  622.     beq.s    grap.noshi2
  623.  
  624.     move.l    #(vew_wid)*8*4,d0
  625.     move.l    #2,d1
  626.     move.l    #$61,d6
  627.  
  628.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  629.     ble.s    grap.noshi2
  630.     move.l    #(vew_wid)*8*4,d0
  631.     move.l    #$51,d6
  632.  
  633. grap.noshi2    
  634.  
  635.     clr.w    d5
  636.     cmp.w    d0,d4            ;breeder dan scherm ?
  637.     ble.s    grap.c
  638.     move.w    d4,d5
  639.     move.w    d0,d4
  640.     sub.w    d0,d5            ;modulo
  641.     lsr.w    #3,d5            ;/8
  642. grap.c
  643.     lsr.w    d1,d0
  644.     lsr.w    d1,d4
  645.  
  646.     move.w    d0,d2
  647.     sub.w    d4,d2
  648.     lsr.w    #1,d2            ;/2
  649.  
  650.     add.w    d6,d2
  651.     move.b    d2,3(a1)        ;x start
  652.     move.w    d2,d3            ;d3 bewaren !
  653.  
  654.     add.w    d4,d2            ;d4 bewaren !
  655.     move.b    d2,7(a1)        ;x end
  656.     
  657.     move.w    pic_vew(a2),d6
  658.     btst    #15,d6            ;hires ?
  659.     beq.s    grap.nohi5    
  660.     add.l    d4,d4            ;*2
  661.     bra.s    grap.noshi5
  662. grap.nohi5
  663.     btst    #6,d6            ;super hires ?
  664.     beq.s    grap.noshi5    
  665.     add.l    d4,d4            ;*4
  666.     add.l    d4,d4
  667. grap.noshi5
  668.  
  669.     move.l    d7,-(sp)
  670.     move.w    pic_vew(a2),d6
  671.     move.l    #17,d0
  672.     move.l    #4,d1            ;ecs 1
  673.     move.l    #3,d7
  674.  
  675.     btst    #15,d6            ;hires ?
  676.     beq.s    grap.nohi3    
  677.     move.l    #17,d0            ;ecs 9
  678.     move.l    #4,d1            ;ecs 2
  679.     move.l    #2,d7
  680.     bra.s    grap.noshi3
  681. grap.nohi3
  682.     btst    #6,d6            ;super hires ?
  683.     beq.s    grap.noshi3    
  684.     move.l    #17,d0            ;ecs 9
  685.     move.l    #4,d1            ;ecs 2
  686.     move.l    #1,d7
  687. grap.noshi3
  688.     sub.w    d0,d3
  689.     lsr.w    #1,d3
  690.     move.w    d3,10(a1)        ;ddfstrt
  691.     
  692.     move.w    d4,d2            ;pic breedte in pixels
  693.     lsr.w    #4,d2            ;/16
  694.     sub.w    d1,d2            ;-1
  695.  
  696.     lsl.w    d7,d2            ;*8
  697.     add.w    d2,d3
  698.     move.w    d3,14(a1)        ;ddfstop
  699.     move.l    (sp)+,d7
  700.     
  701.     lea    pic_raw(a2),a0
  702.  
  703.     moveq.l    #0,d2
  704.     move.w    pic_dpt(a2),d2
  705.     sub.l    #1,d2
  706.     muls    pic_wid(a2),d2
  707.     add.w    d2,d5
  708.  
  709.     move.w    pic_vew(a2),d2        ;viewmode add
  710.     btst    #2,d2
  711.     beq.s    grap.nolace4
  712.  
  713.     moveq.l    #0,d2
  714.     move.w    pic_dpt(a2),d2
  715.     muls    pic_wid(a2),d2
  716.     add.w    d2,d5            ;interlace gedoe
  717. grap.nolace4
  718.  
  719.     lea    gracprbpl,a4        ;iffpln neerzetten
  720.     lea    gracprpln,a0        ;iffpln neerzetten
  721.     moveq.l    #0,d2
  722.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  723.     move.l    #8,d6            ;copper step !
  724.  
  725.     tst.l    curpic2            ;2de picture ?
  726.     bne.s    grap.pic2
  727. grap.nopic2
  728.     move.w    d5,34(a1)        ;modulo oneven zetten
  729.     bra    grap.nodpl
  730. grap.pic2
  731.     move.l    curpic2,a3        ;oneven plane
  732.     move.l    curpic2+4,a6        ;oneven plane
  733.     move.l    currot2,a5        ;oneven plane
  734.     clr.l    curpic2            ;mischien niet goed
  735.     clr.l    curpic2+4        ;mischien niet goed
  736.     clr.l    curpal2            ;mischien niet goed
  737.     clr.l    currot2            ;mischien niet goed
  738.  
  739.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  740.     beq.s    grap.nopic2
  741.     
  742.     cmp.l    #0,currot1        ;routine ?    
  743.     beq.s    grap.norot
  744.     cmp.l    currot1,a5        ;routine hetzelfde ?
  745.     beq.s    grap.nopic2
  746. grap.norot
  747.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  748.     bgt    grap.nopic2
  749.  
  750.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  751.     cmp.b    d2,d3            ;gelijke plnummers ?
  752.     bne.s    grap.nopic2
  753.     move.w    pic_vew(a2),d1
  754.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  755.     bne.s    grap.nopic2
  756.  
  757.     move.w    pic_vew(a2),d1        ;groter dan view test
  758.     btst    #6,d1            ;super hires ?
  759.     beq.s    grap.nohi2a
  760.     move.l    #vew_wid*4,d1
  761.     bra.s    grap.nohi2b
  762. grap.nohi2a
  763.     btst    #15,d1            ;hires ?
  764.     beq.s    grap.noshi2a
  765.     move.l    #vew_wid*2,d1
  766.     bra.s    grap.nohi2b
  767. grap.noshi2a
  768.     move.l    #vew_wid,d1
  769. grap.nohi2b
  770.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  771.     bgt.s    grap.small
  772.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  773.     bgt.s    grap.small
  774.  
  775.     move.w    pic_vew(a2),d1
  776.     btst    #2,d1
  777.     beq.s    grap.nolace8a
  778.     move.l    hogscr,d1
  779.     add.l    d1,d1
  780.     bra.s    grap.nolace8b
  781. grap.nolace8a
  782.     move.l    hogscr,d1
  783. grap.nolace8b
  784.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  785.     bgt.s    grap.small
  786.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  787.     bgt.s    grap.small
  788.     bra.s    grap.big
  789.  
  790. grap.small
  791.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  792.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  793.     bne    grap.nopic2
  794.     move.w    pic_wid(a2),d1
  795.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  796.     bne    grap.nopic2
  797.  
  798. grap.big
  799.     move.l    a3,curpic2        ;toch wel goed !
  800.     move.l    a6,curpic2+4
  801.     move.l    a3,curpal2
  802.     move.l    a5,currot2
  803.  
  804.     tst.b    dplctr            ;dual playfield al gezet ?
  805.     beq    grap.nocop
  806.  
  807.     move.w    30(a1),34(a1)        ;modulo copieren
  808.  
  809.     move.w    2(a4),d1        ;bplcon0
  810.     btst    #10,d1            ;al dual playfield ?
  811.     beq.s    grap.ta
  812.  
  813.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  814.     move.w    6(a0),14(a0)
  815.  
  816.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  817.     move.w    22(a0),30(a0)
  818.  
  819.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  820.     move.w    38(a0),46(a0)
  821.  
  822.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  823.     move.w    54(a0),62(a0)
  824.  
  825.     bra.s    grap.tb
  826. grap.ta
  827.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  828.     move.w    28(a0),62(a0)
  829.  
  830.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  831.     move.w    22(a0),46(a0)
  832.  
  833.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  834.     move.w    14(a0),30(a0)
  835.  
  836.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  837.     move.w    6(a0),14(a0)
  838.  
  839. grap.tb
  840.     move.l    #palette,a3        ;palette copieren
  841.  
  842.     move.w    #16-1,d1
  843. grap.pal
  844.     move.l    (a3)+,60(a3)
  845.     dbra    d1,grap.pal
  846.  
  847. grap.nocop
  848.     add.w    d3,d2            ;aantal bitplanes
  849.     cmp.w    #8,d2            ;8 bitplanes ?
  850.     blt    grap.no8planes2
  851.     move.w    #%10000,d2        ;only bit 4
  852.     bra    grap.8planes2
  853. grap.no8planes2
  854.     lsl.w    #8,d2
  855.     lsl.w    #4,d2
  856. grap.8planes2
  857.     or.w    #$400,d2        ;dual playfield aan
  858.     move.w    d2,2(a4)        ;bplcon0
  859.  
  860.     movem.l    d0-d7/a0-a6,-(sp)
  861.  
  862.     move.l    curpic,a2        ;animpic ?
  863.     move.l    curfrm,d7
  864.     cmp.l    #0,a2
  865.     bne.s    grap.noanipic
  866.  
  867.     move.l    curpic2,a2        ;normal pic ?
  868.     move.l    curfrm2,d7
  869.     cmp.l    #0,a2
  870.     beq.s    grap.nodplpic
  871.  
  872. grap.noanipic
  873.     add.l    d6,a0
  874.     add.w    d6,d6
  875.     bsr.s    grappln            ;a2,d6,d7,d0
  876. grap.nodplpic
  877.     movem.l    (sp)+,d0-d7/a0-a6
  878.     add.w    d6,d6
  879.     bra.s    grap.nodpla
  880.  
  881.  
  882. grap.nodpl                ;geen dual playfield
  883.     cmp.w    #8,d2            ;8 bitplanes ?
  884.     blt    grap.no8planes
  885.     move.w    #%10000,d2        ;only bit 4
  886.     bra    grap.8planes
  887. grap.no8planes
  888.     lsl.w    #8,d2
  889.     lsl.w    #4,d2
  890. grap.8planes
  891.     move.w    d2,2(a4)        ;bplcon0
  892.  
  893. grap.nodpla
  894.     move.w    d5,30(a1)        ;modulo even
  895.  
  896.     moveq.l    #0,d3
  897.     add.w    pic_vew(a2),d3        ;viewmode add
  898.     moveq.l    #0,d2
  899.     move.w    2(a4),d2
  900.     or.l    d3,d2
  901.  
  902.     ifd    gui
  903.     tst.b    genlck
  904.     bne    grap.genset
  905.     endc
  906.  
  907.     or.l    #$100,d2        ;genlock off ($302)
  908.  
  909.     ifd    gui
  910.     bra    grap.gencont
  911. grap.genset
  912.     or.l    #$102,d2        ;genlock on ($302)
  913. grap.gencont
  914.     endc
  915.     
  916.     move.w    d2,2(a4)
  917.     
  918.     bsr.s    grappln            ;a2,d6,d7,d0
  919.  
  920. grap.end
  921.     
  922.     movem.l    (sp)+,d0-d7/a0-a6
  923.     rts
  924.         
  925.  
  926.     ;sets on of the 2 possible pictures to the copper
  927.     ;handles interlace
  928.  
  929.     ;d7=framenummer
  930.     ;d6=copperliststap
  931.     ;d0=raw planes positie
  932.     ;a2=current picture
  933. grappln                    ;planes invullen 
  934.     movem.l    d0-d7/a0-a6,-(sp)
  935.  
  936.     lea    pic_raw(a2),a1
  937.     move.l    a1,d0            ;raw planes
  938.     
  939.     moveq.l    #0,d2            ;x*y
  940.     move.w    pic_wid(a2),d2
  941.     lsr.l    #1,d2            ;/2
  942.     moveq.l    #0,d3
  943.     move.w    pic_hgt(a2),d3
  944.     muls    d3,d2
  945.     
  946.     move.l    d2,d4
  947.     add.l    d2,d2
  948.  
  949.     move.w    pic_dpt(a2),d3
  950.     muls    d3,d4            ;hele picture size
  951.     muls    d7,d4            ;frame*size d7 !!!
  952.  
  953.     add.l    d4,d4
  954.  
  955.     add.l    d4,d0
  956.  
  957.     move.l    #vew_wid,d5        ;max x view
  958.     move.l    hogscr,d4        ;max y view
  959.     move.w    pic_vew(a2),d1        ;viewmode add
  960.     btst    #2,d1
  961.     beq.s    grappln.nolace
  962.     add.l    d4,d4            ;max y view
  963. grappln.nolace
  964.     btst    #15,d1            ;hires ?
  965.     beq.s    grappln.nohi
  966.     move.l    #vew_wid*2,d5        ;max x view
  967.     bra.s    grappln.noshi
  968. grappln.nohi
  969.     btst    #6,d1            ;super hires ?
  970.     beq.s    grappln.noshi
  971.     move.l    #vew_wid*4,d5        ;max x view
  972. grappln.noshi
  973.  
  974.     moveq.l    #0,d3            ;scherm centreren
  975.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  976.     cmp.w    d5,d3            ;breder dan scherm ?
  977.     ble.s    grappln.qa
  978.     sub.w    d5,d3            ;-scherm breedte
  979.     lsr.w    #2,d3            ;/4
  980.  
  981.     add.l    d3,d3
  982.  
  983.     add.l    d3,d0
  984. grappln.qa
  985.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  986.     cmp.w    d4,d3            ;hoger dan scherm ?
  987.     ble.s    grappln.qb
  988.     sub.w    d4,d3            ;-scherm breedte
  989.     lsr.w    #1,d3            ;/2
  990.     moveq.l    #0,d5
  991.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  992.     muls    pic_dpt(a2),d5
  993.     muls    d5,d3
  994.     add.l    d3,d0
  995. grappln.qb
  996.     moveq.l    #0,d2
  997.     move.w    pic_wid(a2),d2
  998.  
  999.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  1000.     btst    #2,d5
  1001.     beq.s    grappln.nolac7b
  1002.  
  1003.     move.w    $04(a6),d5        ;even/oneven ?
  1004.     btst    #15,d5
  1005.     beq.s    grappln.nolac7b
  1006.     
  1007.     moveq.l    #0,d3
  1008.     move.w    pic_wid(a2),d3
  1009.     muls    pic_dpt(a2),d3
  1010.     add.l    d3,d0
  1011. grappln.nolac7b
  1012.  
  1013.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  1014.     tst.w    d1            ;0 planes ?
  1015.     beq    grappln.end
  1016.     sub.w    #1,d1
  1017. grappln.a
  1018.     move.w    d0,3*2(a0)
  1019.     swap    d0
  1020.     move.w    d0,1*2(a0)
  1021.     swap    d0
  1022.     add.l    d6,a0            ;d6=copper step !
  1023.     add.l    d2,d0
  1024.     dbra    d1,grappln.a
  1025.  
  1026.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1027.     bne    grappln.noham8
  1028.     btst    #3,pic_vew(a2)        ;ham ?
  1029.     beq    grappln.noham8
  1030.  
  1031.     move.w    -14(a0),d0        ;get 6
  1032.     move.w    -10(a0),d1
  1033.     move.w    -6(a0),d2        ;get 7
  1034.     move.w    -2(a0),d3
  1035.     move.w    -18(a0),-2(a0)        ;5>7
  1036.     move.w    -22(a0),-6(a0)        ;5>7
  1037.     move.w    -26(a0),-10(a0)        ;4>6
  1038.     move.w    -30(a0),-14(a0)        ;4>6
  1039.     move.w    -34(a0),-18(a0)        ;3>5
  1040.     move.w    -38(a0),-22(a0)        ;3>5
  1041.     move.w    -42(a0),-26(a0)        ;2>4
  1042.     move.w    -46(a0),-30(a0)        ;2>4
  1043.     move.w    -50(a0),-34(a0)        ;1>3
  1044.     move.w    -54(a0),-38(a0)        ;1>3
  1045.     move.w    -58(a0),-42(a0)        ;0>2
  1046.     move.w    -62(a0),-46(a0)        ;0>2
  1047.     move.w    d0,-62(a0)        ;6>0
  1048.     move.w    d1,-58(a0)        ;6>0
  1049.     move.w    d2,-54(a0)        ;7>1
  1050.     move.w    d3,-50(a0)        ;7>1
  1051. grappln.noham8
  1052.  
  1053. grappln.end
  1054.     movem.l    (sp)+,d0-d7/a0-a6
  1055.     rts
  1056.  
  1057.     ;sets palettes to palette-buffer
  1058.     
  1059. grac
  1060.     movem.l    d0-d7/a0-a6,-(sp)
  1061.  
  1062.     lea    curpal1,a3        ;palette 1
  1063.     move.l    #palette,a1
  1064.     bsr.s    gracfrm
  1065.  
  1066.     lea    curpal2,a3        ;palette 2 (dpl)
  1067.     move.l    #16*4+palette,a1
  1068.     bsr.s    gracfrm
  1069.     
  1070.     bsr    palctr            ;palette-buffer to copper
  1071. grac.end
  1072.     movem.l    (sp)+,d0-d7/a0-a6
  1073.     rts
  1074.         
  1075.     ;moves palette from picture to palette-buffer
  1076.  
  1077. gracfrm
  1078.     movem.l    d0-d7/a0-a6,-(sp)
  1079.     tst.l    (a3)            ;palette aanwezig ?
  1080.     beq.s    gracfrm.end
  1081.  
  1082.     move.l    (a3),a2            ;current palette
  1083.     
  1084.     cmp.l    #'PALE',(a2)        ;palette ?
  1085.     bne.s    gracfrm.pict
  1086.     lea    6(a2),a0        ;palette
  1087.     move.w    4(a2),d0        ;aantal kleuren
  1088.     bra.s    gracfrm.col
  1089. gracfrm.pict
  1090.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1091.     bne.s    gracfrm.noanim
  1092.  
  1093.     moveq.l    #0,d1
  1094.     move.w    pic_ani(a2),d1
  1095.     bclr    #7,d1            ;behandelbit weghalen
  1096.  
  1097.     moveq.l    #0,d3
  1098.     move.w    pic_wid(a2),d3
  1099.     lsr.w    #1,d3            ;/2
  1100.     muls    pic_hgt(a2),d3
  1101.     muls    pic_dpt(a2),d3
  1102.  
  1103.     add.l    d3,d3
  1104.  
  1105.     add.l    #pic_raw,d3
  1106.     move.l    d3,d5
  1107.  
  1108.     btst    #0,d1
  1109.     bne.s    gracfrm.buf2
  1110.     moveq.l    #0,d5
  1111. gracfrm.buf2
  1112.     add.l    d5,a2
  1113. gracfrm.noanim
  1114.     lea    pic_pal(a2),a0        ;palette
  1115.     move.w    pic_palnum(a2),d0
  1116.  
  1117.     tst.w    d0            ;0 planes ?
  1118.     beq.s    gracfrm.end
  1119. gracfrm.col
  1120. gracfrm.fa
  1121.     move.l    (a0)+,(a1)+
  1122.     dbra    d0,gracfrm.fa
  1123. gracfrm.end
  1124.     movem.l    (sp)+,d0-d7/a0-a6
  1125.     rts
  1126.     
  1127.     ;handles colorcycling in the palette-buffer
  1128.  
  1129. palcycctr
  1130.     movem.l    d0-d7/a0-a6,-(sp)
  1131.  
  1132.     move.l    curpic1,a2        ;current raw
  1133.     cmp.l    #0,a2
  1134.     beq.s    palcycctr.qb
  1135.     lea    cycdel1,a3        ;cycle delays
  1136.     move.l    #paltab,a4
  1137.     bsr    palcyc
  1138. palcycctr.qb
  1139.     move.l    curpic2,a2        ;current raw
  1140.     cmp.l    #0,a2
  1141.     beq.s    palcycctr.c
  1142.     lea    cycdel2,a3        ;cycle delays
  1143.     move.l    #16*2+paltab,a4
  1144.     bsr    palcyc
  1145. palcycctr.c
  1146.     movem.l    (sp)+,d0-d7/a0-a6
  1147.     rts
  1148.     
  1149.     ;copies palette-buffer to copper
  1150.  
  1151. palctr
  1152.     movem.l    d0-d7/a0-a6,-(sp)
  1153.  
  1154.     lea    gracprcol,a1        ;AGA
  1155.     move.l    #palette,a0
  1156.     move.l    #paltab,a2
  1157.     move.w    #8-1,d6
  1158. palctr.e
  1159.     move.w    #32-1,d7
  1160. palctr.d
  1161.     move.w    (a2)+,d0            ;get cycle-position
  1162.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1163.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1164.     add.l    #4,a1
  1165.     dbra    d7,palctr.d
  1166.     add.l    #((32+2)*4),a1
  1167.     dbra    d6,palctr.e
  1168. palctr.end
  1169.     movem.l    (sp)+,d0-d7/a0-a6
  1170.     rts
  1171.  
  1172.     ;reset palette tabel, for proper color cycling
  1173.  
  1174. paltabres
  1175.     movem.l    d0-d7/a0-a6,-(sp)
  1176.     lea    paltab,a0
  1177.     clr.l    d0
  1178.     move.w    #256-1,d1
  1179. paltabres.a
  1180.     move.w    d0,(a0)+
  1181.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1182.     dbra    d1,paltabres.a
  1183. paltabres.end
  1184.     movem.l    (sp)+,d0-d7/a0-a6
  1185.     rts
  1186.  
  1187.     ;colorcyclinghandling of a palette
  1188.  
  1189. palcyc
  1190.     movem.l    d0-d7/a0-a6,-(sp)
  1191.     move.w    #4-1,d7            ;4 cycles
  1192. palcyc.d
  1193.     tst.w    (a3)+            ;delay klaar ?
  1194.     bne.s    palcyc.c
  1195.     
  1196.     moveq.l    #0,d1
  1197.     move.b    pic_cycstr(a2),d1    ;start color
  1198.     lsl.b    #1,d1        ;*2
  1199.  
  1200.     moveq.l    #0,d2
  1201.     move.b    pic_cycend(a2),d2    ;end color
  1202.     lsl.b    #1,d2        ;*2
  1203.  
  1204.     moveq.l    #0,d3
  1205.     move.b    pic_cycadd(a2),d3    ;richting
  1206.  
  1207.     move.l    a4,a0            ;palette pointer
  1208.     move.l    a0,a1
  1209.     add.l    d1,a0            ;startcolor
  1210.     add.l    d2,a1            ;endcolor
  1211.     
  1212.     cmp.b    #1,d3            ;omhoog
  1213.     beq.s    palcyc.up    
  1214.     cmp.b    #3,d3            ;omlaag
  1215.     beq.s    palcyc.down
  1216.     bra.s    palcyc.i
  1217.  
  1218. palcyc.up                ;kleuren copieren
  1219.     move.w    (a1),d4            ;laatst color bewaren
  1220. palcyc.f                ;kleuren copieren
  1221.     cmp.l    a0,a1
  1222.     beq.s    palcyc.fa
  1223.     move.w    -(a1),2(a1)
  1224.     bra.s    palcyc.f
  1225. palcyc.fa
  1226.     move.w    d4,(a1)
  1227.     bra.s    palcyc.g    
  1228.     
  1229. palcyc.down
  1230.     move.w    (a0),d4            ;laatst color bewaren
  1231. palcyc.h                ;kleuren copieren
  1232.     cmp.l    a0,a1
  1233.     beq.s    palcyc.ha
  1234.     move.w    2(a0),(a0)+
  1235.     bra.s    palcyc.h
  1236. palcyc.ha
  1237.     move.w    d4,(a1)
  1238.  
  1239. palcyc.g
  1240.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1241.     bra.s    palcyc.i
  1242. palcyc.c
  1243.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1244. palcyc.i
  1245.     add.l    #4,a2            ;next cycle info
  1246.     dbra    d7,palcyc.d
  1247.  
  1248. palcyc.qb
  1249.     movem.l    (sp)+,d0-d7/a0-a6
  1250.     rts
  1251.  
  1252.  
  1253.  
  1254. ;    SECTION    variabelen,DATA_c
  1255.  
  1256.     cnop    0,2
  1257. curtsk        dc.l    0
  1258. tskpri        dc.l    0
  1259. duplok        dc.l    0
  1260. inttel        dc.l    0
  1261. intdel        dc.l    0
  1262.  
  1263. form        dc.l    0
  1264. ifffil        dc.l    0
  1265. intvbold    dc.l    0
  1266. inttbeold    dc.l    0
  1267. patpos        dc.l    0
  1268. gfxlib        dc.l    0
  1269. doslib        dc.l    0
  1270. wbview      dc.l    0
  1271. mt_data        dc.l    0
  1272. memvid        dc.l    0
  1273. oldcprlist    dc.l    0
  1274. hogscr        dc.l    vew_hgt
  1275.  
  1276. inspos        dc.l    -1
  1277. anispd1        dc.w    1    ;nooit op 0 !
  1278. anispd2        dc.w    1
  1279.  
  1280.         cnop    0,2
  1281. varclr.s            ;start wissen
  1282. oldrot        dc.l    0
  1283. curpic        dc.l    0
  1284. curfrm        dc.l    0
  1285. cycdel1        ds.w    4
  1286. cycdel2        ds.w    4
  1287.  
  1288. rotinf1        dc.w    0
  1289. rotinf2        dc.w    0
  1290.  
  1291. effspd        dc.w    0
  1292. efflop        dc.b    0
  1293. anilop1        dc.b    0
  1294. anilop2        dc.b    0
  1295. anipal1        dc.b    0
  1296. anipal2        dc.b    0
  1297. rotdpl        dc.b    1
  1298. rottrg        dc.b    0
  1299. dplctr        dc.b    0
  1300.         cnop    0,2
  1301.  
  1302. insdat        ds.l    4
  1303. inspri        dc.l    0
  1304. instel        dc.w    0
  1305.  
  1306. cureff        dc.l    0
  1307. efftel        dc.w    0
  1308.  
  1309. curpal1        dc.l    0
  1310. curpal2        dc.l    0
  1311. currot1        dc.l    0
  1312. currot2        dc.l    0
  1313. curpic1        dc.l    0
  1314. curpic2        dc.l    0
  1315. anitel1        dc.w    0
  1316. anitel2        dc.w    0
  1317. curfrm1        dc.l    0
  1318. curfrm2        dc.l    0
  1319. oldfrm1        dc.l    0
  1320. oldfrm2        dc.l    0
  1321.  
  1322. varclr.e
  1323.         dc.l    0            ;wisruimte
  1324.     
  1325. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1326.     
  1327. ntscmode    dc.b    0
  1328. end        dc.b    0
  1329.  
  1330. pronam    dc.b    'VideoTracker',0
  1331.     cnop    0,2
  1332. dosnam    dc.b    'dos.library',0
  1333.     cnop    0,4
  1334. gfxnam    dc.b    'graphics.library',0
  1335.     cnop    0,4
  1336.     
  1337.     cnop    0,4
  1338. gra.s            ;copperlist edit buffer
  1339. gracprscr
  1340.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1341. gracprbpl
  1342.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1343.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1344. gracprpln
  1345.     dc.w    $e0,$0000,$e2,$0000    ;1
  1346.     dc.w    $e4,$0000,$e6,$0000    ;2
  1347.     dc.w    $e8,$0000,$ea,$0000    ;3
  1348.     dc.w    $ec,$0000,$ee,$0000    ;4
  1349.     dc.w    $f0,$0000,$f2,$0000    ;5
  1350.     dc.w    $f4,$0000,$f6,$0000    ;6
  1351.     dc.w    $f8,$0000,$fa,$0000    ;7
  1352.     dc.w    $fc,$0000,$fe,$0000    ;8
  1353. gracprcol
  1354.     dc.w    $106,$0000
  1355.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1356.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1357.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1358.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1359.     dc.w    $106,$0200
  1360.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1361.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1362.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1363.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1364.  
  1365.     dc.w    $106,$2000
  1366.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1367.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1368.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1369.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1370.     dc.w    $106,$2200
  1371.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1372.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1373.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1374.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1375.  
  1376.     dc.w    $106,$4000
  1377.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1378.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1379.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1380.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1381.     dc.w    $106,$4200
  1382.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1383.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1384.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1385.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1386.  
  1387.     dc.w    $106,$6000
  1388.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1389.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1390.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1391.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1392.     dc.w    $106,$6200
  1393.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1394.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1395.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1396.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1397.  
  1398.     dc.w    $106,$8000
  1399.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1400.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1401.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1402.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1403.     dc.w    $106,$8200
  1404.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1405.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1406.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1407.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1408.  
  1409.     dc.w    $106,$a000
  1410.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1411.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1412.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1413.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1414.     dc.w    $106,$a200
  1415.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1416.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1417.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1418.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1419.  
  1420.     dc.w    $106,$c000
  1421.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1422.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1423.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1424.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1425.     dc.w    $106,$c200
  1426.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1427.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1428.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1429.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1430.  
  1431.     dc.w    $106,$e000
  1432.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1433.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1434.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1435.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1436.     dc.w    $106,$e200
  1437.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1438.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1439.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1440.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1441.  
  1442.     dc.w    $106,$1000
  1443.  
  1444. cprjmp
  1445.     dc.w    $080,0,$082,0
  1446. gra.e
  1447. gra.ql    equ    gra.e-gra.s        ;block lengte
  1448.  
  1449. cpr                    ;real copperlist
  1450.     dc.w    $0001,$fffe
  1451.     dc.w    $09c,$8001        ;tbeint
  1452. cprspr
  1453.     dc.w    $120,$0000,$122,$0000
  1454.     dc.w    $124,$0000,$126,$0000
  1455.     dc.w    $128,$0000,$12a,$0000
  1456.     dc.w    $12c,$0000,$12e,$0000
  1457.     dc.w    $130,$0000,$132,$0000
  1458.     dc.w    $134,$0000,$136,$0000
  1459.     dc.w    $138,$0000,$13a,$0000
  1460.     dc.w    $13c,$0000,$13e,$0000
  1461.  
  1462. cprbuf
  1463.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1464.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1465.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1466.  
  1467.     dc.w    $e0,$0000,$e2,$0000    ;0
  1468.     dc.w    $e4,$0000,$e6,$0000    ;1
  1469.     dc.w    $e8,$0000,$ea,$0000    ;2
  1470.     dc.w    $ec,$0000,$ee,$0000    ;3
  1471.     dc.w    $f0,$0000,$f2,$0000    ;4
  1472.     dc.w    $f4,$0000,$f6,$0000    ;5
  1473.     dc.w    $f8,$0000,$fa,$0000    ;6
  1474.     dc.w    $fc,$0000,$fe,$0000    ;7
  1475.  
  1476.     dc.w    $106,$0000
  1477.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1478.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1479.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1480.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1481.     dc.w    $106,$0200
  1482.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1483.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1484.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1485.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1486.  
  1487.     dc.w    $106,$2000
  1488.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1489.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1490.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1491.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1492.     dc.w    $106,$2200
  1493.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1494.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1495.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1496.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1497.  
  1498.     dc.w    $106,$4000
  1499.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1500.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1501.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1502.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1503.     dc.w    $106,$4200
  1504.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1505.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1506.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1507.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1508.  
  1509.     dc.w    $106,$6000
  1510.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1511.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1512.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1513.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1514.     dc.w    $106,$6200
  1515.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1516.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1517.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1518.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1519.  
  1520.     dc.w    $106,$8000
  1521.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1522.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1523.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1524.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1525.     dc.w    $106,$8200
  1526.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1527.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1528.      dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1529.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1530.  
  1531.     dc.w    $106,$a000
  1532.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1533.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1534.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1535.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1536.     dc.w    $106,$a200
  1537.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1538.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1539.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1540.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1541.  
  1542.     dc.w    $106,$c000
  1543.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1544.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1545.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1546.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1547.     dc.w    $106,$c200
  1548.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1549.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1550.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1551.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1552.  
  1553.     dc.w    $106,$e000
  1554.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1555.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1556.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1557.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1558.     dc.w    $106,$e200
  1559.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1560.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1561.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1562.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1563.  
  1564.     dc.w    $106,$1000
  1565.  
  1566.     dc.w    $080,0,$082,0
  1567. cprbuf.e
  1568.  
  1569.     dc.w    $088,$0000        ;copjmp2
  1570.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1571. cprbck
  1572. sprdat
  1573.     dc.w    $ffff,$fffe
  1574.  
  1575. palette        ds.l    256        ;palette 24-bits, far out !
  1576. paltab        ds.w    256        ;palette cycle-tabel
  1577.  
  1578.     cnop    0,2
  1579. var    ds.b    $300    ;variabelen voor routines
  1580.  
  1581.     
  1582.         endc
  1583.  
  1584. ; this is the routine-source
  1585. ;**********************************************************************
  1586.  
  1587. rot_vew    equ    0    ;$8004 <- nog niet goed !
  1588. rot_dpt    equ    3
  1589.  
  1590.         ifeq    rot_vew-0
  1591.         ifd    ocs
  1592. rot_wid        equ    44
  1593. rot_cenx    equ    0
  1594.         endc
  1595.         ifnd    ocs
  1596. rot_wid        equ    48
  1597. rot_cenx    equ    4*8
  1598.         endc
  1599. rot_hgt        equ    290
  1600. rot_ceny    equ    6
  1601. rot_siz        equ    -150
  1602.         endc
  1603.  
  1604.         ifeq    rot_vew-$8004
  1605.         ifd    ocs
  1606. rot_wid        equ    44*2
  1607. rot_cenx    equ    4*8
  1608.         endc
  1609.         ifnd    ocs
  1610. rot_wid        equ    48*2
  1611. rot_cenx    equ    0
  1612.         endc
  1613. rot_hgt        equ    290*2
  1614. rot_ceny    equ    5
  1615. rot_siz        equ    -100
  1616.         endc
  1617.     
  1618.     SECTION    10,CODE
  1619.     cnop    0,8
  1620. rot
  1621. rotp
  1622.     ifd    ocs
  1623.     dc.l    'ROTO'
  1624.     endc
  1625.     ifnd    ocs
  1626.     dc.l    'ROTA'
  1627.     endc
  1628. ProgStart:
  1629.     movem.l    d2-d7/a1-a6,-(sp)
  1630.  
  1631.     lea    rot,a3            ;program-base
  1632.     ifd    rout
  1633.     move.l    #rotc,a2
  1634.     endc
  1635.     move.l    a2,rotchp-rot(a3)
  1636.     
  1637.     move.l    d0,d1
  1638.     divs    #128,d1
  1639.     and.l    #$ffff,d1
  1640.     move.l    d1,d7            ;
  1641.     muls    #128,d1
  1642.     sub.l    d1,d0
  1643.  
  1644.     move.l    d0,d1
  1645.     divs    #64,d1
  1646.     and.l    #$ffff,d1
  1647.     move.l    d1,rotmod-rot(a3)    ;mode
  1648.     muls    #64,d1
  1649.     sub.l    d1,d0
  1650.  
  1651.     move.l    d0,d1
  1652.     divs    #16,d1
  1653.     and.l    #$ffff,d1
  1654.     move.l    d1,d7            ;view size
  1655.     lsl.l    #1,d7            ;*2
  1656.     lea    rotsiztab,a1
  1657.     move.w    (a1,d7),Dif-rot(a3)
  1658.     muls    #16,d1
  1659.     sub.l    d1,d0
  1660.  
  1661.     move.l    d0,rotsintabpos-rot(a3)    ;beweeg vorm
  1662.     
  1663.     tst.l    var_lnd(a0)        ;is er een landfile ?
  1664.     beq    rot.return
  1665.     move.l    var_lnd(a0),a0        ;landscape data
  1666.     cmp.l    #'LAND',(a0)        ;still active ?
  1667.     bne    rot.return
  1668.  
  1669.     move.l    lnd_sizx(a0),sizx-rot(a3)
  1670.     move.l    lnd_sizy(a0),sizy-rot(a3)
  1671.     
  1672.     move.l    lnd_sizx(a0),d0        ;bereken DifW
  1673.     move.l    #128,d1
  1674.     clr.l    d2
  1675.     move.w    Dif-rot(a3),d2
  1676.     divs    d2,d1
  1677.     sub.w    d1,d0
  1678.     move.l    d0,DifW-rot(a3)
  1679.  
  1680.     lea    lnd_wrl(a0),a0
  1681.     move.l    a0,d0
  1682.     move.l    d0,World-rot(a3)
  1683.     
  1684. ;    tst.l    Ytable-rot(a3)        ;al gedaan ?
  1685. ;    bne    rot.done
  1686.  
  1687.     lea    rotytab,a0
  1688.     move.l    a0,d0
  1689.     move.l    d0,Ytable-rot(a3)
  1690.  
  1691.     lea    rotyadr,a0
  1692.     move.l    a0,d0
  1693.     move.l    d0,YTabAdr-rot(a3)
  1694.     add.l    #4*rot_dpt,d0
  1695.     move.l    d0,YTabAdrEnd-rot(a3)
  1696.  
  1697.     lea    rotdata,a0
  1698.     move.l    a0,d0
  1699.     move.l    d0,World_Data-rot(a3)
  1700.  
  1701.     move.l    rotchp-rot(a3),a1
  1702.     add.l    #rotraw1-rotc,a1
  1703.     add.l    rotbuf-rot(a3),a1
  1704.     
  1705.     move.l    Ytable-rot(a3),a6
  1706.     move.l    YTabAdr-rot(a3),a5
  1707.     move.w    #rot_dpt-1,d1        ;depth-1
  1708. PInit_1:
  1709.     move.l    a6,(a5)+
  1710.     move.l    a1,a0            ;bitplane halen
  1711.     add.l    #rot_wid,a1
  1712.     move.l    #rot_hgt-1,d0        ;heigth-1
  1713. PInit_2:
  1714.     move.l    a0,(a6)+
  1715.     add.l    #rot_dpt*rot_wid,a0
  1716.     dbra    d0,PInit_2
  1717.     dbra    d1,PInit_1
  1718.  
  1719. rot.done
  1720.  
  1721. LoadLand:                ;load landscape
  1722.  
  1723. StartHere:                ;landscape groot laten zien
  1724. rotlop
  1725.     bsr.s    Hoofd3D
  1726.  
  1727. rot.return
  1728.     move.l    rotchp-rot(a3),a0
  1729.     add.l    #rotpic1-rotc,a0        ;picture
  1730.     add.l    rotbuf-rot(a3),a0
  1731.     eor.l    #rotpic2-rotpic1,rotbuf-rot(a3)
  1732.     move.l    #0,d1            ;copper
  1733.     movem.l    (sp)+,d2-d7/a1-a6
  1734.     rts
  1735.     
  1736.  
  1737. Hoofd3D:                ;landscape 3d laten zien
  1738.     move.l    Ytable-rot(a3),a6
  1739.  
  1740. ;    move.l    Ytable(pc),a6
  1741. ;    add.l    YTabNr(pc),a6
  1742.     bsr    ScreenClear            ;scherm wissen
  1743.  
  1744.     move.l    World-rot(a3),a5
  1745.  
  1746.     lea    rotsintab,a1            ;sinus add tabel
  1747.     move.l    rotsintabpos-rot(a3),d0
  1748.     lsl.l    #3,d0                ;*8
  1749.     add.l    d0,a1
  1750.     
  1751.     lea    rotsin,a0            ;sinus data
  1752.     move.l    rotsinx-rot(a3),d0        ;sinus x pos
  1753.     clr.l    d2
  1754.     move.w    (a0,d0),d2
  1755. ;    move.l    sizx-rot(a3),d3            ;totale breedte
  1756.     move.l    DifW-rot(a3),d3            ;- x module
  1757.     muls    d3,d2                ;maal goede breedte
  1758.     divs    #256,d2                ;delen
  1759.     move.w    d2,2+AbsX-rot(a3)        ;set absx
  1760.  
  1761.     move.l    rotsiny-rot(a3),d1        ;sinus y pos
  1762.     clr.l    d2
  1763.     move.w    (a0,d1),d2
  1764. ;    move.l    sizy-rot(a3),d3            ;totale breedte
  1765.     move.l    DifW-rot(a3),d3            ;- x module
  1766.     muls    d3,d2                ;maal goede breedte
  1767.     divs    #256,d2                ;delen
  1768.     move.w    d2,2+AbsY-rot(a3)        ;set ansy
  1769.     
  1770.  
  1771.     move.l    rotsinx-rot(a3),d0        ;change x pos
  1772.     add.l    (a1),d0
  1773.     cmp.l    #((((rotsin.e-rotsin)/8)*2)*4),d0
  1774.     blt.s    rot.ga
  1775.     sub.l    #((((rotsin.e-rotsin)/8)*2)*4),d0
  1776. rot.ga
  1777.     move.l    d0,rotsinx-rot(a3)
  1778.  
  1779.     move.l    rotsiny-rot(a3),d1    ;change y pos
  1780.     add.l    4(a1),d1
  1781.     cmp.l    #((((rotsin.e-rotsin)/8)*2)*4),d1
  1782.     blt.s    rot.gb
  1783.     sub.l    #((((rotsin.e-rotsin)/8)*2)*4),d1
  1784. rot.gb
  1785.     move.l    d1,rotsiny-rot(a3)
  1786.  
  1787.     move.l    AbsX-rot(a3),d0        ;x,y view positie
  1788.     muls    (sizx+2)-rot(a3),d0
  1789.     add.l    d0,a5
  1790.     move.l    AbsY-rot(a3),d0
  1791.     add.l    d0,a5
  1792.  
  1793.     move.l    rotmod-rot(a3),d0    ;mode halen
  1794.     tst.b    d0
  1795.     beq.s    rotpix            ;pixels ?
  1796.     cmp.b    #1,d0
  1797.     beq    rotlin            ;lijntjes ?
  1798.     rts
  1799.  
  1800. rotpix                    ;pixels
  1801.     move.w    #-64,X-rot(a3)        ; -64
  1802. rotpix_LoopX:
  1803.     move.w    #64,Y-rot(a3)
  1804.     move.l    World_Data-rot(a3),a4
  1805. rotpix_LoopY:
  1806.     move.w    X-rot(a3),d0
  1807.     move.w    Y-rot(a3),d2
  1808.     clr.w    d1
  1809.     move.b    (a5)+,d1        ;z-waarde halen
  1810.     lsr.b    #1,d1            ;/2
  1811.  
  1812.     ifge    rot_dpt-2
  1813.     move.b    d1,d7
  1814.     lsr.b    #7-rot_dpt,d7        ;kleur
  1815.     beq.s    rotpixcol.da        ;overslaan ?
  1816.     endc
  1817.     
  1818.     moveq.w    #0,d3
  1819.     move.w    Hoogte-rot(a3),d4
  1820.     move.w    #rot_siz,d5        ; -120 -150
  1821.     sub.w    d5,d2
  1822.     tst.w    d2
  1823.     beq.s    rotCentProjEnd
  1824.     sub.w    d3,d0
  1825.     sub.w    d4,d1
  1826.     muls    d5,d0
  1827.     muls    d5,d1
  1828.     divs    d2,d0
  1829.     divs    d2,d1
  1830.     sub.w    d0,d3
  1831.     sub.w    d1,d4
  1832.     move.w    d3,d0
  1833.     move.w    d4,d1
  1834.     neg.w    d1
  1835. rotCentProjEnd:
  1836.  
  1837.     add.w    #rot_wid*4+rot_cenx,d0        ;centreer x1,y1
  1838.     add.w    #(rot_hgt*rot_ceny)/10,d1
  1839.  
  1840.     ifeq    rot_dpt-1        ;no-colorversion
  1841.     move.w    d1,d6            ;y-pos
  1842.     lsl.w    #2,d6            ;*4
  1843.     move.l    (a6,d6),a1        ;y regel halen
  1844.     move.w    d0,d6            ;x-pos
  1845.     lsr.w    #3,d6            ;/8
  1846.     and.w    #7,d0
  1847.     eor.b    #7,d0
  1848.     bset    d0,(a1,d6)
  1849.     endc
  1850.     
  1851.     ifge    rot_dpt-2        ;color version
  1852.     move.w    d1,d6            ;y-pos
  1853.     lsl.w    #2,d6            ;*4
  1854.     move.l    (a6,d6),a1        ;y regel halen
  1855.     move.w    d0,d6            ;x-pos
  1856.     lsr.w    #3,d6            ;/8
  1857.     and.w    #7,d0
  1858.     eor.b    #7,d0
  1859.  
  1860.     ifeq    rot_dpt-2        ;color version 4
  1861.     btst    #1,d7            ;kleur    
  1862.     beq.s    rotpixcol.ca
  1863.     bset    d0,(a1,d6)
  1864. rotpixcol.ca
  1865.     btst    #0,d7            ;kleur    
  1866.     beq.s    rotpixcol.cb
  1867.     bset    d0,rot_wid(a1,d6)
  1868. rotpixcol.cb
  1869.     endc
  1870.  
  1871.     ifeq    rot_dpt-3        ;color version 8
  1872.     btst    #2,d7            ;kleur    
  1873.     beq.s    rotpixcol.ca
  1874.     bset    d0,(a1,d6)
  1875. rotpixcol.ca
  1876.     btst    #0,d7            ;kleur    
  1877.     beq.s    rotpixcol.cb
  1878.     bset    d0,rot_wid(a1,d6)
  1879. rotpixcol.cb
  1880.     btst    #1,d7            ;kleur    
  1881.     beq.s    rotpixcol.cc
  1882.     bset    d0,2*rot_wid(a1,d6)
  1883. rotpixcol.cc
  1884.     endc
  1885.  
  1886.     ifeq    rot_dpt-5        ;color big version
  1887.     add.l    #rot_wid*2,a1
  1888.     btst    #4,d7            ;kleur    
  1889.     beq.s    rotpixcol.ca
  1890.     bset    d0,-2*rot_wid(a1,d6)
  1891. rotpixcol.ca
  1892.     btst    #0,d7            ;kleur    
  1893.     beq.s    rotpixcol.cb
  1894.     bset    d0,-1*rot_wid(a1,d6)
  1895. rotpixcol.cb
  1896.     btst    #1,d7            ;kleur    
  1897.     beq.s    rotpixcol.cc
  1898.     bset    d0,(a1,d6)
  1899. rotpixcol.cc
  1900.     btst    #2,d7            ;kleur    
  1901.     beq.s    rotpixcol.cd
  1902.     bset    d0,1*rot_wid(a1,d6)
  1903. rotpixcol.cd
  1904.     btst    #3,d7            ;kleur    
  1905.     beq.s    rotpixcol.ce
  1906.     bset    d0,2*rot_wid(a1,d6)
  1907. rotpixcol.ce
  1908.     endc
  1909.  
  1910. rotpixcol.da
  1911.     endc
  1912.     
  1913.     clr.l    d0
  1914.     move.w    Dif-rot(a3),d0        ;stap naar volgende scherm positie
  1915.     sub.w    d0,Y-rot(a3)
  1916.     cmp.w    #-64,Y-rot(a3)        ;laatste y punt ?
  1917.     bne    rotpix_LoopY
  1918.  
  1919.     add.w    d0,X-rot(a3)
  1920.  
  1921.     add.l    DifW-rot(a3),a5        ;stap naar volgend kaart-regel
  1922.     cmp.w    #64,X-rot(a3)        ;laatste x punt ?
  1923.     bne    rotpix_LoopX
  1924.     rts
  1925.     
  1926.  
  1927.  
  1928.  
  1929. rotlin                    ;lijntjes
  1930.     move.w    #-64,X-rot(a3)        ; -64
  1931. rotlin_LoopX:
  1932.     move.w    #64,Y-rot(a3)
  1933.     move.l    World_Data-rot(a3),a4
  1934. rotlin_LoopY:
  1935.     move.w    X-rot(a3),d0
  1936.     move.w    Y-rot(a3),d2
  1937.     clr.w    d1
  1938.     move.b    (a5)+,d1        ;z-waarde halen
  1939.     lsr.b    #1,d1            ;/2
  1940.     bsr    CentralProj
  1941.  
  1942.     add.w    #rot_wid*4+rot_cenx,d0        ;centreer x1,y1
  1943.     add.w    #(rot_hgt*rot_ceny)/10,d1
  1944.     move.w    OldX-rot(a3),d2        ;x2,y2
  1945.     move.w    OldY-rot(a3),d3
  1946.     move.w    d0,OldX-rot(a3)
  1947.     move.w    d1,OldY-rot(a3)
  1948.     cmp.w    #64,Y-rot(a3)        ;eerste y punt = overslaan
  1949.     beq.s    rotlin_Go_on
  1950.  
  1951.     bsr    Drawline        ;lijn tekenen
  1952.  
  1953. rotlin_Go_on:
  1954.     move.w    (a4),d0
  1955.     move.w    2(a4),d1
  1956.     move.w    OldX-rot(a3),d2
  1957.     move.w    OldY-rot(a3),d3
  1958.     move.w    d2,(a4)+
  1959.     move.w    d3,(a4)+
  1960.     cmp.w    #-64,X-rot(a3)        ;eerste x punt = overslaan
  1961.     beq.s    rotlin_Go_On2
  1962.  
  1963.     bsr    Drawline
  1964.  
  1965. rotlin_Go_On2:
  1966.     clr.l    d0
  1967.     move.w    Dif-rot(a3),d0        ;stap naar volgende scherm positie
  1968.     sub.w    d0,Y-rot(a3)
  1969.     cmp.w    #-64,Y-rot(a3)        ;laatste y punt ?
  1970.     bne    rotlin_LoopY
  1971.  
  1972.     add.w    d0,X-rot(a3)
  1973.     add.l    DifW-rot(a3),a5        ;stap naar volgend kaart-regel
  1974.     cmp.w    #64,X-rot(a3)        ;laatste x punt ?
  1975.     bne    rotlin_LoopX
  1976.  
  1977.     bsr.s    blitwait
  1978.     rts
  1979.     
  1980. ;    move.b    $BFEC01,d0        ;read keyboard
  1981. ;    ror.b    #1,d0
  1982. ;    cmp.b    #$AF,d0    ; F1
  1983. ;    bne.s    F2
  1984. ;    move.w    #4,Dif
  1985. ;    move.l    #224,DifW
  1986. ;F2:
  1987. ;    cmp.b    #$AE,d0    ; F2
  1988. ;    bne.s    F3
  1989. ;    move.w    #8,Dif
  1990. ;    move.l    #240,DifW
  1991. ;F3:
  1992. ;    cmp.b    #$AD,d0    ; F3
  1993. ;    bne.s    F4
  1994. ;    move.w    #16,Dif
  1995. ;    move.l    #248,DifW
  1996. ;F4:
  1997. ;    cmp.b    #$AC,d0    ; F4
  1998. ;    bne.s    ESC
  1999. ;    move.w    #32,Dif
  2000. ;    move.l    #252,DifW
  2001. ;ESC:
  2002. ;    cmp.b    #$BA,d0    ; Esc
  2003. ;    bne.s    Skey
  2004. ;    move.l    #0,d0
  2005. ;    rts
  2006. ;
  2007. ;Skey:
  2008. ;    cmp.b    #$DE,d0    ; 'S'
  2009. ;    bne.s    F8
  2010. ;    move.l    #2,d0
  2011. ;F8:
  2012. ;    cmp.b    #$A8,d0    ; F8
  2013. ;    bne.s    F10
  2014. ;    move.w    OldToeval(pc),Toeval
  2015. ;    move.w    #1,d0
  2016. ;    rts
  2017. ;F10:
  2018. ;    cmp.b    #$A6,d0        ; F10
  2019. ;    bne.s    T1_5
  2020. ;    move.w    Teller(pc),Toeval
  2021. ;    move.w    Toeval(pc),OldToeval
  2022. ;    move.l    #1,d0
  2023. ;    rts
  2024. ;T1_5:
  2025. ;    cmp.b    #$FE,d0        ; 1,2,3,4,5
  2026. ;    bhi.s    F9
  2027. ;    cmp.b    #$F9,d0
  2028. ;    bls.s    F9
  2029. ;    sub.b    #$FA,d0
  2030. ;    move.b    d0,Size
  2031. ;F9:
  2032. ;    cmp.b    #$A7,d0
  2033. ;    bne    Loop3d_1
  2034. ;    move.l    #1,d0
  2035. ;    move.w    Toeval(pc),OldToeval
  2036. ;    rts
  2037.  
  2038. BlitClear:
  2039.     move.l    (a6),$DFF050        ;blit clear
  2040.     move.l    (a6),$DFF054
  2041.     move.l    #(rot_dpt-1)*rot_wid,$DFF064
  2042.     move.w    #$900,$DFF040
  2043.     move.w    #0,$DFF042
  2044.     move.w    #(rot_hgt*64)+(rot_wid/2),$DFF058
  2045.     bsr.s    blitwait
  2046.     rts
  2047.  
  2048. blitwait:
  2049.     btst    #6,($DFF002).l        ;blt wait
  2050.     bne.s    blitwait
  2051.     rts
  2052.  
  2053. ScreenClear:                ;clear screen
  2054.     move.l    YTabAdr-rot(a3),a0
  2055.     move.w    #rot_dpt-1,d0
  2056. LPos:
  2057.     move.l    (a0)+,a6
  2058.     bsr.s    BlitClear
  2059.     dbra    d0,LPos
  2060.     rts
  2061.  
  2062. Verschil:
  2063.     sub.l    d2,d0
  2064.     bsr.s    SubM
  2065.     neg.l    d0
  2066.     bsr.s    SubM
  2067.     neg.l    d0
  2068.     rts
  2069.  
  2070. SubM:
  2071.     cmp.l    #$7F,d0
  2072.     ble.s    Kleiner
  2073.     move.l    #$FF,d2
  2074.     sub.l    d2,d0
  2075. Kleiner:
  2076.     rts
  2077.  
  2078. CentralProj:
  2079.     move.w    #0,d3
  2080.     move.w    Hoogte-rot(a3),d4
  2081.     move.w    #rot_siz,d5    ; -120 -150
  2082.     sub.w    d5,d2
  2083.     tst.w    d2
  2084.     beq.s    CentProjEnd
  2085.     sub.w    d3,d0
  2086.     sub.w    d4,d1
  2087.     muls    d5,d0
  2088.     muls    d5,d1
  2089.     divs    d2,d0
  2090.     divs    d2,d1
  2091.     sub.w    d0,d3
  2092.     sub.w    d1,d4
  2093.     move.w    d3,d0
  2094.     move.w    d4,d1
  2095.     neg.w    d1
  2096. CentProjEnd:
  2097.     rts
  2098.  
  2099. Drawline:
  2100.     cmp.w    d0,d2
  2101.     bne.s    WDraw1
  2102.     cmp.w    d1,d3
  2103.     bne.s    WDraw1
  2104.     rts
  2105.  
  2106. WDraw1:
  2107.     tst.w    d1
  2108.     bmi.s    Clipping
  2109.     tst.w    d3
  2110.     bmi.s    Clipping1
  2111.     bra.s    WDraw
  2112.  
  2113. Clipping:
  2114.     tst.w    d3
  2115.     bpl.s    Clipping1
  2116.     rts
  2117.  
  2118. Clipping1:
  2119.     move.w    d0,d4
  2120.     sub.w    d2,d4
  2121.     move.w    d3,d5
  2122.     muls    d5,d4
  2123.     sub.w    d1,d5
  2124.     divs    d5,d4
  2125.     add.w    d2,d4
  2126.     tst.w    d1
  2127.     bmi.s    PKt1
  2128.     move.w    d4,d2
  2129.     clr.w    d3
  2130.     bra.s    Drawline
  2131.  
  2132. PKt1:
  2133.     move.w    d4,d0
  2134.     clr.w    d1
  2135.     bra.s    Drawline
  2136.  
  2137. WDraw:
  2138.     move.w    #rot_dpt*rot_wid,a1
  2139.     clr.l    d6
  2140.     move.w    d1,d6
  2141.     lsl.w    #2,d6
  2142.     move.l    0(a6,d6.l),d4
  2143.     moveq    #-$10,d5
  2144.     and.w    d0,d5
  2145.     lsr.w    #3,d5
  2146.     add.w    d5,d4
  2147.     clr.l    d5
  2148.     sub.w    d1,d3
  2149.     roxl.b    #1,d5
  2150.     tst.w    d3
  2151.     bge.s    GrY
  2152.     neg.w    d3
  2153. GrY:
  2154.     sub.w    d0,d2
  2155.     roxl.b    #1,d5
  2156.     tst.w    d2
  2157.     bge.s    GrX
  2158.     neg.w    d2
  2159. GrX:
  2160.     move.w    d3,d1
  2161.     sub.w    d2,d1
  2162.     bge.s    Gd
  2163.     exg    d2,d3
  2164. Gd:
  2165.     roxl.b    #1,d5
  2166.     move.b    OktTab(pc,d5.l),d5
  2167.     add.w    d2,d2
  2168.     move.l    a5,-(sp)
  2169.     move.l    #$dff000,a5
  2170. WBlit:
  2171.     btst    #6,$002(a5)
  2172.     bne.s    WBlit
  2173.     move.w    d2,$062(a5)
  2174.     sub.w    d3,d2
  2175.     bge.s    Voorz
  2176.     or.b    #$40,d5
  2177. Voorz:
  2178.     move.w    d2,$052(a5)
  2179.     sub.w    d3,d2
  2180.     move.w    d2,$064(a5)
  2181.     move.w    #$8000,$074(a5)
  2182.     move.w    #$FFFF,$072(a5)
  2183.     move.w    #$FFFF,$044(a5)
  2184.     and.w    #15,d0
  2185.     ror.w    #4,d0
  2186.     or.w    #$BCA,d0
  2187.     move.w    d0,$040(a5)
  2188.     move.w    d5,$042(a5)
  2189.     move.l    d4,$048(a5)
  2190.     move.l    d4,$054(a5)
  2191.     move.w    a1,$060(a5)
  2192.     move.w    a1,$066(a5)
  2193.     lsl.w    #6,d3
  2194.     addq.w    #2,d3
  2195.     move.w    d3,$058(a5)
  2196.     move.l    (sp)+,a5
  2197.     rts
  2198.  
  2199. OktTab:
  2200.     dc.w    $111,$915,$519,$D1D
  2201.  
  2202.  
  2203. rotchp        dc.l    0
  2204.  
  2205. X:        dc.w    0
  2206. Y:        dc.w    0
  2207. OldX:        dc.w    0
  2208. OldY:        dc.w    0
  2209. World_Data:    dc.l    0
  2210. AbsX:        dc.l    0
  2211. AbsY:        dc.l    0
  2212. Hoogte:        dc.w    119    ;-49 tot 119
  2213.  
  2214. sizx        dc.l    0
  2215. sizy        dc.l    0
  2216.  
  2217. Ytable:        dc.l    0
  2218. YTabAdr:    dc.l    0
  2219. YTabAdrEnd:    dc.l    0
  2220. YTabNr:        dc.l    0
  2221.  
  2222. World:        dc.l    0
  2223. Dif:        dc.w    8    ;4    ;8    scherm stap
  2224. DifW:        dc.l    242    ;226    ;242    kaart-regel module stap
  2225.  
  2226. rotbuf        dc.l    0
  2227. rotsinx        dc.l    0
  2228. rotsiny        dc.l    (((rotsin.e-rotsin)/8)*2)
  2229. rotsintabpos    dc.l    0
  2230. rotmod        dc.l    0
  2231.  
  2232. ;        Dif    Difw
  2233. rotsiztab
  2234.     dc.w    16,8,4,2
  2235.     
  2236. ;        xadd    yadd
  2237. rotsintab
  2238.     dc.l    4*2,    4*2
  2239.     dc.l    2*2,    4*2
  2240.     dc.l    4*2,    6*2
  2241.  
  2242.     rept    16-3
  2243.     dc.l    2*2,    2*2
  2244.     endr
  2245. rotsin
  2246.        dc.w       128,129,130,131,132,134,135,136,137,138,139,140
  2247.        dc.w       141,142,143,145,146,147,148,149,150,151,152,153
  2248.        dc.w       154,155,157,158,159,160,161,162,163,164,165,166
  2249.        dc.w       167,168,169,170,171,172,174,175,176,177,178,179
  2250.        dc.w       180,181,182,183,184,185,186,187,188,189,190,191
  2251.        dc.w       192,192,193,194,195,196,197,198,199,200,201,202
  2252.        dc.w       203,204,204,205,206,207,208,209,210,210,211,212
  2253.        dc.w       213,214,215,215,216,217,218,219,219,220,221,222
  2254.        dc.w       222,223,224,225,225,226,227,227,228,229,229,230
  2255.        dc.w       231,231,232,233,233,234,235,235,236,236,237,237
  2256.        dc.w       238,239,239,240,240,241,241,242,242,243,243,244
  2257.        dc.w       244,244,245,245,246,246,247,247,247,248,248,248
  2258.        dc.w       249,249,249,250,250,250,251,251,251,251,252,252
  2259.        dc.w       252,252,253,253,253,253,253,254,254,254,254,254
  2260.        dc.w       254,254,255,255,255,255,255,255,255,255,255,255
  2261.        dc.w       255,255,255,255,255,255,255,255,255,255,255,254
  2262.        dc.w       254,254,254,254,254,254,253,253,253,253,253,252
  2263.        dc.w       252,252,252,251,251,251,251,250,250,250,249,249
  2264.        dc.w       249,248,248,248,247,247,247,246,246,245,245,244
  2265.        dc.w       244,244,243,243,242,242,241,241,240,240,239,239
  2266.        dc.w       238,237,237,236,236,235,235,234,233,233,232,231
  2267.        dc.w       231,230,229,229,228,227,227,226,225,225,224,223
  2268.        dc.w       222,222,221,220,219,219,218,217,216,215,215,214
  2269.        dc.w       213,212,211,210,210,209,208,207,206,205,204,204
  2270.        dc.w       203,202,201,200,199,198,197,196,195,194,193,192
  2271.        dc.w       192,191,190,189,188,187,186,185,184,183,182,181
  2272.        dc.w       180,179,178,177,176,175,174,172,171,170,169,168
  2273.        dc.w       167,166,165,164,163,162,161,160,159,158,157,155
  2274.        dc.w       154,153,152,151,150,149,148,147,146,145,143,142
  2275.        dc.w       141,140,139,138,137,136,135,134,132,131,130,129
  2276.        dc.w       128,127,126,125,124,122,121,120,119,118,117,116
  2277.        dc.w       115,114,113,111,110,109,108,107,106,105,104,103
  2278.        dc.w       102,101,99,98,97,96,95,94,93,92,91,90
  2279.        dc.w       89,88,87,86,85,84,82,81,80,79,78,77
  2280.        dc.w       76,75,74,73,72,71,70,69,68,67,66,65
  2281.        dc.w       65,64,63,62,61,60,59,58,57,56,55,54
  2282.        dc.w       53,52,52,51,50,49,48,47,46,46,45,44
  2283.        dc.w       43,42,41,41,40,39,38,37,37,36,35,34
  2284.        dc.w       34,33,32,31,31,30,29,29,28,27,27,26
  2285.        dc.w       25,25,24,23,23,22,21,21,20,20,19,19
  2286.        dc.w       18,17,17,16,16,15,15,14,14,13,13,12
  2287.        dc.w       12,12,11,11,10,10,9,9,9,8,8,8
  2288.        dc.w       7,7,7,6,6,6,5,5,5,5,4,4
  2289.        dc.w       4,4,3,3,3,3,3,2,2,2,2,2
  2290.        dc.w       2,2,1,1,1,1,1,1,1,1,1,1
  2291.        dc.w       1,1,1,1,1,1,1,1,1,1,1,2
  2292.        dc.w       2,2,2,2,2,2,3,3,3,3,3,4
  2293.        dc.w       4,4,4,5,5,5,5,6,6,6,7,7
  2294.        dc.w       7,8,8,8,9,9,9,10,10,11,11,12
  2295.        dc.w       12,12,13,13,14,14,15,15,16,16,17,17
  2296.        dc.w       18,19,19,20,20,21,21,22,23,23,24,25
  2297.        dc.w       25,26,27,27,28,29,29,30,31,31,32,33
  2298.        dc.w       34,34,35,36,37,37,38,39,40,41,41,42
  2299.        dc.w       43,44,45,46,46,47,48,49,50,51,52,52
  2300.        dc.w       53,54,55,56,57,58,59,60,61,62,63,64
  2301.        dc.w       64,65,66,67,68,69,70,71,72,73,74,75
  2302.        dc.w       76,77,78,79,80,81,82,84,85,86,87,88
  2303.        dc.w       89,90,91,92,93,94,95,96,97,98,99,101
  2304.        dc.w       102,103,104,105,106,107,108,109,110,111,113,114
  2305.        dc.w       115,116,117,118,119,120,121,122,124,125,126,127
  2306.        dc.w       128
  2307. rotsin.e
  2308.  
  2309. rotyadr        ds.l    rot_dpt            ;plane offsets
  2310. rotytab        ds.l    rot_dpt*rot_hgt        ;plane y offsets
  2311. rotdata        ds.w    64            ;words
  2312.  
  2313. ;pic_wid        equ    4        ;wide in bytes
  2314. ;pic_hgt        equ    6        ;hoogte
  2315. ;pic_dpt        equ    8        ;number planes
  2316. ;pic_ani        equ    10        ;aantal effes (anim)
  2317. ;pic_vew        equ    12        ;viewmode
  2318. ;pic_cycstr        equ    14        ;cycle start (*4)
  2319. ;pic_cycend        equ    15        ;cycle end (*4)
  2320. ;pic_cycspd        equ    16        ;cycle speed (*4)
  2321. ;pic_cycadd        equ    17        ;cycle add (*4)
  2322. ;pic_palnum        equ    30        ;aantal kleuren
  2323. ;pic_pal        equ    32        ;palette start
  2324. ;pic_palsiz        equ    256*2        ;vaste palette size
  2325. ;pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  2326.  
  2327.  
  2328. rotp.e
  2329.  
  2330.     SECTION    11,CODE_C
  2331.     cnop    0,8
  2332. rotc
  2333.     ifd    ocs
  2334.     dc.l    'ROTO'
  2335.     endc
  2336.     ifnd    ocs
  2337.     dc.l    'ROTA'
  2338.     endc
  2339.     rts
  2340.     cnop    0,8
  2341. rotpic1
  2342.     dc.l    'PICT'
  2343.     dc.w    rot_wid,rot_hgt,rot_dpt,1,rot_vew
  2344.     ifd    ocs
  2345.     ds.b    4*4
  2346.     endc
  2347.     ifnd    ocs
  2348.     ds.b    8*4+16
  2349.     endc
  2350.     
  2351.     ifeq    rot_dpt-1
  2352.     dc.w    2-1
  2353.     ifd    ocs
  2354.     dc.w    $000,$FFF
  2355.     ds.w    256-2
  2356.     endc
  2357.     ifnd    ocs
  2358.     dc.w    $000,0,$FFF,0
  2359.     ds.l    256-2
  2360.     endc
  2361.     endc
  2362.  
  2363.     ifeq    rot_dpt-2
  2364.     dc.w    4-1
  2365.     ifd    ocs
  2366.     dc.w    $000,$0f0,$c70,$777
  2367.     ds.w    256-4
  2368.     endc
  2369.     ifnd    ocs
  2370.     dc.w    $000,0,$0f0,0,$c70,0,$777,0
  2371.     ds.l    256-4
  2372.     endc
  2373.     endc
  2374.  
  2375.     ifeq    rot_dpt-3
  2376.     dc.w    8-1
  2377.     ifd    ocs
  2378.     dc.w    $000,$050,$0a0,$0f0
  2379.     dc.w    $c70,$c70,$777,$777
  2380.     ds.w    256-8
  2381.     endc
  2382.     ifnd    ocs
  2383.     dc.w    $000,0,$050,0,$0a0,0,$0f0,0
  2384.     dc.w    $c70,0,$c70,0,$777,0,$777,0
  2385.     ds.l    256-8
  2386.     endc
  2387.     endc
  2388.  
  2389.     ifeq    rot_dpt-5
  2390.     dc.w    32-1
  2391.     ifd    ocs
  2392.     dc.w    $000,$050,$060,$070,$080,$090,$0a0,$0b0
  2393.     dc.w    $0c0,$0d0,$0f0,$2e0,$4b0,$690,$880,$a70
  2394.     dc.w    $c70,$c70,$c70,$c70,$d80,$d80,$d80,$d80
  2395.     dc.w    $c71,$b62,$a63,$964,$866,$777,$777,$777
  2396.     ds.w    256-32
  2397.     endc
  2398.     ifnd    ocs
  2399.     dc.w    $000,0,$050,0,$060,0,$070,0,$080,0,$090,0,$0a0,0,$0b0,0
  2400.     dc.w    $0c0,0,$0d0,0,$0f0,0,$2e0,0,$4b0,0,$690,0,$880,0,$a70,0
  2401.     dc.w    $c70,0,$c70,0,$c70,0,$c70,0,$d80,0,$d80,0,$d80,0,$d80,0
  2402.     dc.w    $c71,0,$b62,0,$a63,0,$964,0,$866,0,$777,0,$777,0,$777,0
  2403.     ds.l    256-32
  2404.     endc
  2405.     endc
  2406.  
  2407.  
  2408. rotraw1
  2409.     ds.b    rot_wid*rot_hgt*rot_dpt
  2410.  
  2411.     cnop    0,8
  2412. rotpic2
  2413.     dc.l    'PICT'
  2414.     dc.w    rot_wid,rot_hgt,rot_dpt,1,rot_vew
  2415.     ifd    ocs
  2416.     ds.b    4*4
  2417.     endc
  2418.     ifnd    ocs
  2419.     ds.b    8*4+16
  2420.     endc
  2421.     
  2422.     ifeq    rot_dpt-1
  2423.     dc.w    2-1
  2424.     ifd    ocs
  2425.     dc.w    $000,$FFF
  2426.     ds.w    256-2
  2427.     endc
  2428.     ifnd    ocs
  2429.     dc.w    $000,0,$FFF,0
  2430.     ds.l    256-2
  2431.     endc
  2432.     endc
  2433.  
  2434.     ifeq    rot_dpt-2
  2435.     dc.w    4-1
  2436.     ifd    ocs
  2437.     dc.w    $000,$0f0,$c70,$777
  2438.     ds.w    256-4
  2439.     endc
  2440.     ifnd    ocs
  2441.     dc.w    $000,0,$0f0,0,$c70,0,$777,0
  2442.     ds.l    256-4
  2443.     endc
  2444.     endc
  2445.  
  2446.     ifeq    rot_dpt-3
  2447.     dc.w    8-1
  2448.     ifd    ocs
  2449.     dc.w    $000,$050,$0a0,$0f0
  2450.     dc.w    $c70,$c70,$777,$777
  2451.     ds.w    256-8
  2452.     endc
  2453.     ifnd    ocs
  2454.     dc.w    $000,0,$050,0,$0a0,0,$0f0,0
  2455.     dc.w    $c70,0,$c70,0,$777,0,$777,0
  2456.     ds.l    256-8
  2457.     endc
  2458.     endc
  2459.  
  2460.     ifeq    rot_dpt-5
  2461.     dc.w    32-1
  2462.     ifd    ocs
  2463.     dc.w    $000,$050,$060,$070,$080,$090,$0a0,$0b0
  2464.     dc.w    $0c0,$0d0,$0f0,$2e0,$4b0,$690,$880,$a70
  2465.     dc.w    $c70,$c70,$c70,$c70,$d80,$d80,$d80,$d80
  2466.     dc.w    $c71,$b62,$a63,$964,$866,$777,$777,$777
  2467.     ds.w    256-32
  2468.     endc
  2469.     ifnd    ocs
  2470.     dc.w    $000,0,$050,0,$060,0,$070,0,$080,0,$090,0,$0a0,0,$0b0,0
  2471.     dc.w    $0c0,0,$0d0,0,$0f0,0,$2e0,0,$4b0,0,$690,0,$880,0,$a70,0
  2472.     dc.w    $c70,0,$c70,0,$c70,0,$c70,0,$d80,0,$d80,0,$d80,0,$d80,0
  2473.     dc.w    $c71,0,$b62,0,$a63,0,$964,0,$866,0,$777,0,$777,0,$777,0
  2474.     ds.l    256-32
  2475.     endc
  2476.     endc
  2477.  
  2478.  
  2479. rotraw2
  2480.     ds.b    rot_wid*rot_hgt*rot_dpt
  2481.  
  2482. rotc.e
  2483. rot.e
  2484.  
  2485. ;**********************************************************************
  2486.  
  2487. ;and here are the incbin-files....
  2488.  
  2489.         ifd    rout
  2490.         cnop    0,8
  2491. rotinc
  2492.         incbin    'w:effectaga/iff.scape'
  2493.         endc
  2494.         
  2495.